package com.jinmdz.app.dao.model.charge;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.jinmdz.app.dao.base.BaseItem;
import com.jinmdz.fmis.common.annotation.AnValidate;
import com.jinmdz.fmis.common.constant.EValidateCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 费用信息
 *
 * @author LiCongLu
 * @date 2020-02-13 13:28
 */
@ApiModel(value = "费用信息", description = "费用信息")
public class ChargeItem extends BaseItem {

    /**
     * 业务编码
     */
    @AnValidate(name = "业务编码")
    @ApiModelProperty(value = "业务编码", name = "businessCode", position = 1)
    private String businessCode;

    /**
     * 服务项目外键
     */
    @AnValidate(name = "服务项目外键", required = true, code = EValidateCode.GREATER_ZERO)
    @ApiModelProperty(value = "服务项目外键", name = "serviceItemId", position = 2)
    private Integer serviceItemId;

    /**
     * 服务项目费用名称
     */
    @AnValidate(name = "服务项目费用名称")
    @ApiModelProperty(value = "服务项目费用名称", name = "itemName", position = 3)
    private String itemName;

    /**
     * 项目价格
     */
    @AnValidate(name = "项目价格", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "项目价格", name = "itemPrice", position = 4)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal itemPrice;

    /**
     * 项目数量
     */
    @AnValidate(name = "项目数量", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "项目数量", name = "itemNumber", position = 5)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal itemNumber;

    /**
     * 项目单位
     */
    @AnValidate(name = "项目单位")
    @ApiModelProperty(value = "项目单位", name = "itemUnit", position = 6)
    private String itemUnit;

    /**
     * 项目金额
     */
    @AnValidate(name = "项目金额", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "项目金额", name = "itemCharge", position = 7)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal itemCharge;

    /**
     * 优惠金额
     */
    @AnValidate(name = "优惠金额", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "优惠金额", name = "discountCharge", position = 8)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal discountCharge;

    /**
     * 惠民金额
     */
    @AnValidate(name = "惠民金额", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "惠民金额", name = "benefitCharge", position = 9)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal benefitCharge;

    /**
     * 实际收费金额
     */
    @AnValidate(name = "实际收费金额", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "实际收费金额", name = "realityCharge", position = 10)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal realityCharge;

    /**
     * 费用时间
     */
    @AnValidate(name = "费用时间")
    @ApiModelProperty(value = "费用时间", name = "chargeTime", example = "2020-02-29 19:30", position = 11)
    @JsonFormat(pattern = yyyy_MM_dd_HH_mm)
    private Date chargeTime;

    /**
     * 是否不可结算
     */
    @AnValidate(name = "是否不可结算")
    @ApiModelProperty(value = "是否不可结算", name = "asUnsettled", position = 12)
    private Integer asUnsettled;

    /**
     * 是否结算
     */
    @AnValidate(name = "是否结算", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "是否结算", name = "asSettled", position = 13)
    private Integer asSettled;

    /**
     * 费用结算外键
     */
    @AnValidate(name = "费用结算外键", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "费用结算外键", name = "chargeSettleId", position = 14)
    private Integer chargeSettleId;

    /**
     * 是否业务费用
     */
    @AnValidate(name = "是否业务费用")
    @ApiModelProperty(value = "是否业务费用", name = "asBusiness", position = 15)
    private Integer asBusiness;

    /**
     * 是否被退费或负费用
     */
    @AnValidate(name = "是否被退费或负费用")
    @ApiModelProperty(value = "是否被退费或负费用", name = "asRefund", position = 16)
    private Integer asRefund;

    /**
     * 被退费费用主键
     */
    @AnValidate(name = "被退费费用主键")
    @ApiModelProperty(value = "被退费费用主键", name = "refundId", position = 17)
    private Integer refundId;

    /**
     * 随机码
     */
    @AnValidate(name = "随机码")
    @ApiModelProperty(value = "随机码", name = "randomCode", position = 18)
    private String randomCode;

    /**
     * 备注
     */
    @AnValidate(name = "备注")
    @ApiModelProperty(value = "备注", name = "remark", position = 19)
    private String remark;
    /**
     * 是否固定价格
     */
    @AnValidate(name = "是否固定价格")
    @ApiModelProperty(value = "是否固定价格", name = "asFixPrice", position = 20)
    private Integer asFixPrice;

    public String getBusinessCode() {
        return businessCode;
    }

    public ChargeItem setBusinessCode(String businessCode) {
        this.businessCode = businessCode;
        return this;
    }

    public Integer getServiceItemId() {
        return serviceItemId;
    }

    public ChargeItem setServiceItemId(Integer serviceItemId) {
        this.serviceItemId = serviceItemId;
        return this;
    }

    public String getItemName() {
        return itemName;
    }

    public ChargeItem setItemName(String itemName) {
        this.itemName = itemName;
        return this;
    }

    public BigDecimal getItemPrice() {
        return itemPrice;
    }

    public ChargeItem setItemPrice(BigDecimal itemPrice) {
        this.itemPrice = itemPrice;
        return this;
    }

    public BigDecimal getItemNumber() {
        return itemNumber;
    }

    public ChargeItem setItemNumber(BigDecimal itemNumber) {
        this.itemNumber = itemNumber;
        return this;
    }

    public String getItemUnit() {
        return itemUnit;
    }

    public ChargeItem setItemUnit(String itemUnit) {
        this.itemUnit = itemUnit;
        return this;
    }

    public BigDecimal getItemCharge() {
        return itemCharge;
    }

    public ChargeItem setItemCharge(BigDecimal itemCharge) {
        this.itemCharge = itemCharge;
        return this;
    }

    public BigDecimal getDiscountCharge() {
        return discountCharge;
    }

    public ChargeItem setDiscountCharge(BigDecimal discountCharge) {
        this.discountCharge = discountCharge;
        return this;
    }

    public BigDecimal getBenefitCharge() {
        return benefitCharge;
    }

    public ChargeItem setBenefitCharge(BigDecimal benefitCharge) {
        this.benefitCharge = benefitCharge;
        return this;
    }

    public BigDecimal getRealityCharge() {
        return realityCharge;
    }

    public ChargeItem setRealityCharge(BigDecimal realityCharge) {
        this.realityCharge = realityCharge;
        return this;
    }

    public Date getChargeTime() {
        return chargeTime;
    }

    public ChargeItem setChargeTime(Date chargeTime) {
        this.chargeTime = chargeTime;
        return this;
    }

    public Integer getAsUnsettled() {
        return asUnsettled;
    }

    public ChargeItem setAsUnsettled(Integer asUnsettled) {
        this.asUnsettled = asUnsettled;
        return this;
    }

    public Integer getAsSettled() {
        return asSettled;
    }

    public ChargeItem setAsSettled(Integer asSettled) {
        this.asSettled = asSettled;
        return this;
    }

    public Integer getChargeSettleId() {
        return chargeSettleId;
    }

    public ChargeItem setChargeSettleId(Integer chargeSettleId) {
        this.chargeSettleId = chargeSettleId;
        return this;
    }

    public Integer getAsBusiness() {
        return asBusiness;
    }

    public ChargeItem setAsBusiness(Integer asBusiness) {
        this.asBusiness = asBusiness;
        return this;
    }

    public Integer getAsRefund() {
        return asRefund;
    }

    public ChargeItem setAsRefund(Integer asRefund) {
        this.asRefund = asRefund;
        return this;
    }

    public Integer getRefundId() {
        return refundId;
    }

    public ChargeItem setRefundId(Integer refundId) {
        this.refundId = refundId;
        return this;
    }

    public String getRandomCode() {
        return randomCode;
    }

    public ChargeItem setRandomCode(String randomCode) {
        this.randomCode = randomCode;
        return this;
    }

    public String getRemark() {
        return remark;
    }

    public ChargeItem setRemark(String remark) {
        this.remark = remark;
        return this;
    }

    public Integer getAsFixPrice() {
        return asFixPrice;
    }

    public ChargeItem setAsFixPrice(Integer asFixPrice) {
        this.asFixPrice = asFixPrice;
        return this;
    }
}
